<?php
//Si la variable archivo que pasamos por URL no esta 
//establecida acabamos la ejecucion del script.
if (!isset($_GET["User"]) || empty($_GET["User"]) || !isset($_GET["Site"]) || empty($_GET["Site"]) ) {
   exit();
}
if( class_exists('ZipArchive') )
    echo "LIBRERIA ZIP: OK <br>";
	
$ruta = "../../../DataUser/".$_GET["User"] . "/". $_GET["Site"] ."/";

$NombreArchivo = "SitioWEB_". $_GET["Site"].".zip";

//CREAMOS EL ARCHIVO. ZIP 
$zip = new ZipArchive();  
if ($zip->open($NombreArchivo, ZIPARCHIVE::CREATE)==TRUE) {  
echo "OPEN ARCHIVO ZIP: OK <br>";
   //Si lo abre, es porque no existe ningun zip con ese nombre  
   //Llamámos a la función para comprimir  
   comprimirDirectorio($ruta, $zip); 
   echo "ADD ELEMENTOS AL ZIP: OK <br>"; 
   //Cerramos el archivo  
   $zip -> close(); 
   echo "CLOSE ARCHIVO ZIP: OK <br>"; 
   
   

 //PERMITE LA DESCARGA DEL ARCHIVO ZIP
header("Content-type:application/force-download");
header("Content-Disposition:filename=" .basename($NombreArchivo));
header("Content-Transfer-Encoding:binary");
 
if(!@readfile($NombreArchivo))
echo "El Archivo ha sido descargado correctamente";
} 
 

//FUNCION PARA COMPRIMIR ARCHIVO ZIP
function comprimirDirectorio($dir, $zip) {  
   //Primero comprabamos que sea un directorio  
   if (is_dir($dir)){   
      //Por cada elemento dentro del directorio  
      foreach (scandir($dir) as $item) {   
         //Evitamos la carpeta actual y la anterior  
         if ($item == '.' || $item == '..') continue;  
         //Si encuentra una que no sea las anteriores,  
         //vuelve a llamar a la función, con un nuevo directorio  
         comprimirDirectorio($dir . "/" . $item, $zip);  
      }  
   }else{  
      //En el caso de que sea un archivo, lo añade al zip  
      $zip->addFile($dir);  
   }  
}  
?>